Описание
Возвращает значение, указывающее состояние обновления текущей
записи, если эта запись участвует в операции пакетного обновления (только в
рабочей области ODBCDirect).
Значение
Возвращаемое значение имеет тип данных Long и определяется
с помощью одной из следующих констант:
dbRecordUnmodified (По умолчанию). Запись не была изменена или была успешно обновлена. dbRecordModified Запись была изменена, но не обновлена в базе данных. dbRecordNew Запись была вставлена с помощью метода AddNew, но еще не занесена в базу данных. DbRecordDeleted Запись была удалена, но еще не удалена из базы данных. dbRecordDBDeleted Запись была удалена и на локальном уровне, и в базе данных.
Замечания
Свойство RecordStatus указывает состояние изменения
текущей записи в последней операции пакетного обновления с нежесткой
блокировкой.
Когда пользователь изменяет запись, свойство RecordStatus
для этой записи автоматически получает значение dbRecordModified.
Аналогично, при добавлении или удалении записи свойство RecordStatus
автоматически получает значение соответствующей константы. При дальнейшем вызове
метода Update в пакетном режиме, механизм DAO задает для каждой
записи выполнение соответствующей операции на удаленном сервере, основываясь на
свойстве RecordStatus этой записи.
Пример
Следующая программа использует свойства RecordStatus и
DefaultCursorDriver для демонстрации изменений в локальном объекте
Recordset во время пакетного обновления. Для выполнения данной процедуры
требуется функция RecordStatusOutput.
Sub RecordStatusX() Dim wrkMain As Workspace Dim conMain As Connection Dim rstTemp As Recordset Set wrkMain = CreateWorkspace("ODBCWorkspace", "admin", "", dbUseODBC) ' Это значение свойства DefaultCursorDriver ' требуется для пакетного обновления. wrkMain.DefaultCursorDriver = dbUseClientBatchCursor Set conMain = wrkMain.OpenConnection("Publishers", dbDriverNoPrompt, False, "ODBC;DATABASE=pubs;UID=sa;PWD=;DSN=Publishers") ' Следующий аргумент блокировки ' требуется для пакетного обновления. Set rstTemp = conMain.OpenRecordset( "SELECT * FROM authors", dbOpenDynaset, 0, dbOptimisticBatch) With rstTemp .MoveFirst Debug.Print "Исходная запись: " & !au_lname Debug.Print , RecordStatusOutput2(.RecordStatus) .Edit !au_lname = "Bowen" .Update Debug.Print "Измененная запись: " & !au_lname Debug.Print , RecordStatusOutput2(.RecordStatus) .AddNew !au_lname = "NewName" .Update Debug.Print "Новая запись: " & !au_lname Debug.Print , RecordStatusOutput2(.RecordStatus) .Delete Debug.Print "Удаленная запись: " & !au_lname Debug.Print , RecordStatusOutput2(.RecordStatus) ' Закрывает локальный набор записей ' без обновления данных на сервере. .Close End With conMain.Close wrkMain.Close End Sub Function RecordStatusOutput(lngTemp As Long) As String Dim strTemp As String strTemp = "" ' Создает отображаемую строку на основании ' значения свойства RecordStatus. If lngTemp = dbRecordUnmodified Then strTemp = "[dbRecordUnmodified]" If lngTemp = dbRecordModified Then strTemp = "[dbRecordModified]" If lngTemp = dbRecordNew Then strTemp = "[dbRecordNew]" If lngTemp = dbRecordDeleted Then strTemp = "[dbRecordDeleted]" If lngTemp = dbRecordDBDeleted Then strTemp = "[dbRecordDBDeleted]" RecordStatusOutput = strTemp End Function